package com.baselet.gwt.client; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.baselet.control.config.SharedConfig; import com.baselet.control.enums.Program; import com.baselet.control.enums.RuntimeType; import com.baselet.gwt.client.base.Browser; import com.baselet.gwt.client.base.Notification; import com.baselet.gwt.client.element.BrowserStorage; import com.baselet.gwt.client.version.BuildInfoProperties; import com.baselet.gwt.client.view.MainView; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.RunAsyncCallback; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.Window.Location; import com.google.gwt.user.client.ui.RootLayoutPanel; public class BaseletGWT implements EntryPoint { Logger log = LoggerFactory.getLogger(BaseletGWT.class); @Override public void onModuleLoad() { log.info("Starting GUI ..."); Program.init(BuildInfoProperties.getVersion(), RuntimeType.GWT); SharedConfig.getInstance().setDev_mode(Location.getParameter("dev") != null); if (!BrowserStorage.initLocalStorageAndCheckIfAvailable()) { if (Browser.get() == Browser.INTERNET_EXPLORER && GWT.getHostPageBaseURL().startsWith("file:")) { Notification.showFeatureNotSupported("You have opened this webpage from your filesystem, therefore<br/>Internet Explorer will not support local storage<br/><br/>Please use another browser like Firefox or Chrome,<br/>or open this application using the web url", false); } else { Notification.showFeatureNotSupported("Sorry, but your browser does not support the required HTML 5 feature 'local storage' (or has cookies disabled)<br/>Suggested browsers are Firefox, Chrome, Opera, Internet Explorer 10+", false); } } else if (!browserSupportsFileReader()) { Notification.showFeatureNotSupported("Sorry, but your browser does not support the required HTML 5 feature 'file reader'<br/>Suggested browsers are Firefox, Chrome, Opera, Internet Explorer 10+", false); } else { Notification.showInfo("Loading application ... please wait ..."); GWT.runAsync(new RunAsyncCallback() { @Override public void onSuccess() { Notification.showInfo(""); RootLayoutPanel.get().add(new MainView()); } @Override public void onFailure(Throwable reason) { Notification.showFeatureNotSupported("Cannot load application from server", false); } }); if (!SharedConfig.getInstance().isDev_mode()) { Window.addWindowClosingHandler(new Window.ClosingHandler() { @Override public void onWindowClosing(Window.ClosingEvent closingEvent) { closingEvent.setMessage("Do you really want to leave the page? You will lose any unsaved changes."); } }); } } log.info("GUI started"); } private final native boolean browserSupportsFileReader() /*-{ return typeof FileReader != "undefined"; }-*/; }